<div class=content>
	<h2>项目描述</h2>
	
	<p><a target="_blank" href="https://golang.org/">Go</a> 是一个开源的编程语言，它能让构造简单、可靠且高效的软件变得容易。Go 语言（或 Golang）是 Google 的 Robert Griesemer，Rob Pike 及 Ken Thompson 在 2007 年开发的一种静态强类型、编译型、并发型，并具有垃圾回收功能的编程语言，并最终于2009年11月开源，在2012年早些时候发布了Go 1稳定版本。Go 是非常年轻的一门语言，它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++等编译型语言的性能与安全性”。</p>
	
	<p>Go 语言语法与 C 相近，但功能上有：内存安全，GC（垃圾回收），结构形态及 CSP-style 并发计算。</p>
	<p>不同于Java，Go内嵌了关联数组（也称为哈希表（Hashes）或字典（Dictionaries）），就像字符串类型一样。</p>
	<p><b>Go 的进阶</b>，关键还是先把数据库，服务器，linux等知识点修满，熟能生巧。| golang这个语言没有什么好进阶的，更多的是在学习系统设计，数据库原理，分布式系统这些东西。</p>
<pre>
Go语言 https://github.com/openbiox/golang-100-days
</pre>
	
	
	
	<h3>Go 语言用途</h3>
	<p>Go 语言被设计成一门应用于搭载 Web 服务器，存储集群或类似用途的巨型中央服务器的系统编程语言。</p>
	<p>对于高性能分布式系统领域而言，Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持，这对于游戏服务端的开发而言是再好不过了。</p>
	<p>Go语言从底层原生支持并发，无须第三方库、开发者的编程技巧和开发经验就可以轻松搞定。</p>
	
	
	
	
	
	<h3>简介</h3>
	<p>计算机软件经历了数十年的发展，形成了多种学术流派，有面向过程编程、面向对象编程、函数式编程、面向消息编程等，这些思想究竟孰优孰劣，众说纷纭。</p>

<p>除了OOP外，近年出现了一些小众的编程哲学，Go语言对这些思想亦有所吸收。例如，Go语言接受了函数式编程的一些想法，支持匿名函数与闭包。再如，Go语言接受了以Erlang语言为代表的面向消息编程思想，支持goroutine和通道，并推荐使用消息而不是共享内存来进行并发编程。总体来说，Go语言是一个非常现代化的语言，精小但非常强大。</p>

<p>Go 语言最主要的特性：</p>
<pre>
自动垃圾回收
更丰富的内置类型
函数多返回值
错误处理
匿名函数和闭包
类型和接口
并发编程
反射
语言交互性
</pre>
	
	<p><b>开发速度</b>: go语言让分享自己的类库更加简单，编译速度非常的快，编译整个go语言源码树，只需要20s。它是介于python的快速开发和c的高速运行之间的语言。语法简洁，有自带的垃圾回收机制，也可帮忙捕获字段的类型。</p>
	<p><b>并发</b>: goroutine很像线程，但是它占用的内存远远比线程少。通道是一种内置的数据结构，可以让用户在不同的goroutine之间同步发送具有类型的消息。这让编程模型更加倾向于在goroutine之间发送消息，而不是互相争夺资源。<br>
goroutine是可以与其他goroutine并行执行的函数，同时也会与主函数并行来执行。在go语言中使用同一个线程来执行多个goroutine。go语言运行时候会自动配置一组逻辑处理器，用来调度和执行goroutine。每个逻辑处理器绑定在操作系统的线程上，这让用户的执行效率高，而并发量显著减少了。</p>

	<p><b>通道</b>: 通道是一种数据结构，可以让goroutine之间进行安全通信，通道可以避免共享内存访问问题。<br>
如果使用全局变量或者共享内存，必须使用复杂的锁规则来防止并发的安全。<br>
通道提供了一种新的模式，通道这一种模式。通道这一模式保证了同一时刻只会有一个goroutine修改数据。通道用于几个交互的goroutine之间发送数据。<br>
两个goroutine之间传输数据是同步的，当传输数据完成之后，两个goroutine都知道数据已经传输完成了。通道并不提供跨goroutine数据访问保护机制。如果通过通道数据传输一份副本，各自对自己的副本做修改是安全的。当传输的是指向数据的指针时,如果读和写是由不同的 goroutine 完成的,每个 goroutine 依旧需要额外的同步动作。</p>

	<p><b>go语言的类型系统</b>: 提供了灵活的，无需继承的类型系统，无需降低性能就能大幅度的复用代码。这个类型系统仍然是基于面向对象开发。go开发使用组合设计模式。简单的将一个类型嵌套进另一个类型，就能复用所有的功能。一个类型由其他更微小的类型组合而成。避免了继承模型。<br>
在go中，不需要声明某个函数实现了某个接口，编译器会判断一个类型的实例是否符合正在使用的接口。<br>
如果一个实例的类型实现了一个接口，意味着这个实例可以运行。</p>



</div>